package com.indexingsystem.system.service;

import java.util.List;

import com.indexingsystem.boss.Vo.FunctionesListVo;
import com.indexingsystem.boss.Vo.PageVo;
import com.indexingsystem.boss.Vo.StatusList;
import com.indexingsystem.boss.Vo.TreeQueryVo;
import com.indexingsystem.boss.common.PagedResult;
import com.indexingsystem.boss.entity.Functiones;

public interface IFunctionsService {

	int deleteByPrimaryKey(String functionId) throws Exception;

	int deleteFunctionesByIdBatch(List<String> functionId) throws Exception;

	int insertSelective(Functiones record) throws Exception;

	PagedResult<Functiones> selectFuncationsList(PageVo pageVo);

	Functiones selectByPrimaryKey(String functionId);

	int updateByPrimaryKeySelective(Functiones record) throws Exception;

	/**
	 * 获取功能上下级列表信息.
	 * 
	 * @return
	 */
	List<FunctionesListVo> getFunctionesList();
	
	/**
	 * 获取权限树列表.
	 * 
	 * @return
	 */
	List<FunctionesListVo> getPermissionList();
	
	
	/**
	 * 获取没有被禁用的功能列表.
	 * @return
	 */
	List<FunctionesListVo> getPermissionEnableList();
	
	/**
	 * 获取角色权限树列表.
	 * 
	 * @return
	 */
	List<FunctionesListVo> getRolePermissionList(String roleId);

	/**
	 * 获取功能总数量.
	 * 
	 * @return
	 */
	Integer getFunctionesCount(String queryCriteria);

	/**
	 * 通过功能id查询子功能列表信息.
	 * 
	 * @param functionId
	 * @return
	 */
	List<Functiones> getSublevelFunctionsList(String functionId);

	/**
	 * 获取子功能总数.
	 * 
	 * @param functionId
	 * @return
	 */
	Integer getSublevelFunctionsListSize(TreeQueryVo treeQueryVo);

	/**
	 * 查询子功能分页查询
	 * 
	 * @param functionId
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	PagedResult<Functiones> selectSublevelFunctionesList(TreeQueryVo treeQueryVo);
	
    /**
     * 批量启用，禁用功能.
     * @param statusList
     * @return
     */
    int batchUpdateInstitutionsWithList(List<StatusList> list) throws Exception;
    
    /**
     * 通过查询功能编码是否已存在
     * 
     * @param record
     * @return
     */
    List<Functiones> selectFunctionesCodeExits(String functionCode);
    
    /**
     * 通过查询功能名称是否已存在
     * 
     * @param record
     * @return
     */
    List<Functiones> selectFunctionesNameExits(String functionName);
    
    
    /**
     * 通过查询英文名是否已存在
     * 
     * @param record
     * @return
     */    
     List<Functiones> selectFunctionesEnNameExits(String functionEName);
}